import java.util.Scanner;
/**
 * 密码：凯撒密码
 * */
public class Caeser {
    public static void main(String[] args) {
        System.out.println("[A 加密][J 解密],Please Choose One");
        Scanner c=new Scanner(System.in);//创建Scanner键盘输入对象
        String  s1=c.nextLine();//获取本行的字符串
        if(s1.equalsIgnoreCase("A")){
            System.out.println("请输入明文：");
            Scanner sc=new Scanner(System.in);
            String s=sc.nextLine();
            System.out.println("请输入密钥：");
            Scanner sc1=new Scanner(System.in);
            int key=sc1.nextInt();//将下一个输入项转换成int类型
            Encryption(s, key);
        }else if(s1.equalsIgnoreCase("J")){

            System.out.println("请输入密文：");
            Scanner sc=new Scanner(System.in);
            String s=sc.nextLine();
            System.out.println("请输入密钥：");
            Scanner sc1=new Scanner(System.in);
            int key=sc1.nextInt();//将下一个输入项转换成int类型
            Decrypt(s, key);//調用解密方法
        }
    }
    public static void Encryption(String str,int k){//加密
        String string="";
        for (int i = 0; i < str.length(); i++) {
            char c=str.charAt(i);
            if(c>='a'&&c<='z'){//如果字符串中的某个字符是小写字母
                c+=k%26;//移动key%26;
                if(c<'a')
                    c+=26;
                if(c>'z')
                    c-=26;

            }else if(c>='A'&&c<='Z'){//如果字符串中的某个字符是大写字母
                c+=k%26;//移动key%26;
                if(c<'A')
                    c+=26;
                if(c>'Z')
                    c-=26;
            }
            string+=c;//将加密后的字符串连成字符串
        }
        System.out.println(str+" 加密后为： "+string);
    }
    public static void Decrypt(String str,int n){//解密
        int k=Integer.parseInt("-"+n);
        String string="";
        for (int i = 0; i < str.length(); i++) {
            char c=str.charAt(i);
            if(c>='a'&&c<='z'){//如果字符串中的某个字符是小写字母
                c+=k%26;//移动key%26;
                if(c<'a')
                    c+=26;
                if(c>'z')
                    c-=26;

            }else if(c>='A'&&c<='Z'){//如果字符串中的某个字符是大写字母
                c+=k%26;//移动key%26;
                if(c<'A')
                    c+=26;
                if(c>'Z')
                    c-=26;
            }
            string+=c;//将解密后的字符串连成字符串
        }
        System.out.println(str+" 加密后为： "+string);
    }

}
